home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / ab20 / ab20_archive / text / cmanual.lzh / ACM3.lzh / AmigaDOS / Example7.c < prev    next >
C/C++ Source or Header  |  1991-01-12  |  4KB  |  131 lines

  1. /* Example7                                                          */
  2. /* This program takes a file/directory/device name as parameter, and */
  3. /* prints out some interesting information about it.                 */
  4.  
  5.  
  6. #include <libraries/dos.h>
  7. #include <exec/memory.h>
  8.  
  9.  
  10. main( argc, argv )
  11. int argc;
  12. char *argv[];
  13. {
  14.   struct FileLock *lock;
  15.   struct FileInfoBlock *fib_ptr; /* Declare a FileInfoBlock */
  16.                                  /* pointer called fib_ptr. */
  17.  
  18.  
  19.   if( argc < 2 )
  20.   {
  21.     /* No file/directory specified! */
  22.     printf("What file/directory do you actually want to examine?\n");
  23.     exit();
  24.   }
  25.  
  26.  
  27.  
  28.   /* 1. Allocate enough memory for a FileInfoBlock structure:       */
  29.   /* (Here is some casting again. AllocMem() returns a CPTR memory  */
  30.   /* pointer, while fib_ptr is a pointer to a FileInfoBlock. It is  */
  31.   /* actually the same thing, but to not make the compiler upset we */
  32.   /* tell it that AllocMem() returns a pointer to a FileInfoBlock.) */
  33.   fib_ptr = (struct FileInfoBlock *)
  34.             AllocMem( sizeof( struct FileInfoBlock ),
  35.                       MEMF_PUBLIC | MEMF_CLEAR );
  36.  
  37.   /* MEMF_PUBLIC: Any type of memory (chip/fast) */
  38.   /* MEMF_CLEAR:  Clear the allocated memory.    */
  39.  
  40.   /* Check if we have allocated the memory successfully: */
  41.   if( fib_ptr == NULL )
  42.   {
  43.     printf("Not enough memory!\n");
  44.     exit();
  45.   };
  46.  
  47.  
  48.   
  49.   /* 2. Try to lock the file: */
  50.   /* (Casting again! We tell the compiler that Lock() returns a pointer */
  51.   /* to a FileLock structure.)                                          */
  52.   lock = (struct FileLock *) Lock( argv[ 1 ], SHARED_LOCK );
  53.   
  54.   /* Colud we lock the file? */
  55.   if( lock == NULL )
  56.   {
  57.     printf("Could not lock the file/directory!\n");
  58.  
  59.     /* Deallocate the memory we have allocated: */
  60.     FreeMem( fib_ptr, sizeof( struct FileInfoBlock ) );
  61.     
  62.     exit();
  63.   }
  64.  
  65.  
  66.  
  67.   /* 3. Try to get some information about the file: */
  68.   if( Examine( lock, fib_ptr ) == NULL )
  69.   {
  70.     printf("Could not examine the file/directory!\n");
  71.  
  72.     /* Deallocate the memory we have allocated: */
  73.     FreeMem( fib_ptr, sizeof( struct FileInfoBlock ) );
  74.     
  75.     /* Unlock the file: */
  76.     UnLock( lock );  
  77.     
  78.     exit();
  79.   }
  80.  
  81.  
  82.  
  83.   /* 4. You may now examine the FileInfoBlock structure! */
  84.  
  85.   if( fib_ptr->fib_DirEntryType < 0 )
  86.     printf("Type:       File\n");
  87.   else
  88.     printf("Type:       Directory\n");
  89.  
  90.   printf("Name:       %s\n", fib_ptr->fib_FileName );
  91.   printf("Size:       %d\n", fib_ptr->fib_Size );
  92.   printf("Blocks:     %d\n", fib_ptr->fib_NumBlocks );
  93.   printf("Comment:    %s\n",
  94.     fib_ptr->fib_Comment[0] != '\0' ? fib_ptr->fib_Comment : "No comment" );
  95.  
  96.   printf("Deletable:  %s\n",
  97.     fib_ptr->fib_Protection & FIBF_DELETE ? "On" : "Off" );
  98.  
  99.   printf("Executable: %s\n",
  100.     fib_ptr->fib_Protection & FIBF_EXECUTE ? "On" : "Off" );
  101.  
  102.   printf("Writable:   %s\n",
  103.     fib_ptr->fib_Protection & FIBF_WRITE ? "On" : "Off" );
  104.  
  105.   printf("Readable:   %s\n",
  106.     fib_ptr->fib_Protection & FIBF_READ ? "On" : "Off" );
  107.  
  108.   printf("Archive:    %s\n",
  109.     fib_ptr->fib_Protection & FIBF_ARCHIVE ? "On" : "Off" );
  110.  
  111.   printf("Pure:       %s\n",
  112.     fib_ptr->fib_Protection & FIBF_PURE ? "On" : "Off" );
  113.  
  114.   printf("Script:     %s\n",
  115.     fib_ptr->fib_Protection & FIBF_SCRIPT ? "On" : "Off" );
  116.  
  117.   printf("Days:       %d\n", fib_ptr->fib_Date.ds_Days );
  118.   printf("Minutes:    %d\n", fib_ptr->fib_Date.ds_Minute );
  119.   printf("Ticks:      %d\n", fib_ptr->fib_Date.ds_Tick );
  120.  
  121.  
  122.  
  123.   /* 5. Unlock the file: */
  124.   UnLock( lock );  
  125.  
  126.  
  127.  
  128.   /* 6. Deallocate the memory we have allocated: */
  129.   FreeMem( fib_ptr, sizeof( struct FileInfoBlock ) );
  130. }
  131.